//package com.ruoyi.oar.controller.app;
//
//import com.ruoyi.common.constant.Constants;
//import com.ruoyi.common.core.domain.AjaxResult;
//import com.ruoyi.common.core.redis.RedisCache;
//import com.ruoyi.common.exception.ServiceException;
//import com.ruoyi.common.utils.ToolUtil;
//import com.ruoyi.common.wechat.WxMaUtil;
//import com.ruoyi.common.wechat.bean.WxMaJscodeSessionResult;
//import com.ruoyi.common.wechat.bean.WxMaLoginBody;
//import com.ruoyi.common.wechat.util.WxMaCryptUtils;
//import com.ruoyi.framework.web.service.SysLoginService;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import io.swagger.annotations.ApiParam;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.*;
//
///**
// * 登录验证
// *
// * @author ruoyi
// */
//@Api(tags = "APP小程序登陆验证")
//@RestController
//@RequestMapping("/app")
//public class AppLoginController {
//    @Autowired
//    private SysLoginService loginService;
//    @Autowired
//    private RedisCache redisCache;
//
//    /**
//     * 通过code获取微信Sessionkey
//     *
//     * @param code 微信code
//     */
//    @ApiOperation("小程序通过code获取微信Sessionkey")
//    @GetMapping("/sessionkey")
//    public AjaxResult getSessionkeyByCode(@RequestParam(required = false) @ApiParam("微信code") String code) {
//        AjaxResult ajax = AjaxResult.success();
//        // 生成令牌
//        WxMaJscodeSessionResult result = WxMaUtil.jsCode2SessionInfo(code);
//        ajax.put(Constants.SESSION_KEY, result.getSessionKey());
//        //redisCache.setCacheObject(RedisConstants.REDIS_CACHE + Constants.SESSION_KEY + ":" + result.getSessionKey(), result.getOpenid(), 30, TimeUnit.MINUTES);
//        return ajax;
//    }
//
//    /**
//     * 小程序解密手机登陆
//     *
//     * @param loginBody 登录信息
//     * @return 结果
//     */
//    @ApiOperation("小程序解密手机登陆")
//    @PostMapping("/wxma-login")
//    public AjaxResult login(@RequestBody @ApiParam("登陆信息") WxMaLoginBody loginBody) {
//        if (ToolUtil.anyNull(loginBody.getSessionKey(), loginBody.getEncryptedData(), loginBody.getIvStr())) {
//            throw new ServiceException("非法操作：授权解密参数不能为空");
//        }
//        //String key = RedisConstants.REDIS_CACHE + Constants.SESSION_KEY + ":" + loginBody.getSessionKey();
//        //if (!redisCache.exists(key)) {
//        //    throw new ServiceException("微信授权登陆已失效，请重新发起授权", HttpStatus.BAD_REQUEST);
//        //}
//        //String openId = redisCache.getCacheObject(key);
//        //try {
//        AjaxResult ajax = AjaxResult.success();
//        //获取手机号
//        String purePhoneNumber = WxMaCryptUtils.decrypt(loginBody);
//        String token = loginService.wxMaLogin(purePhoneNumber);
//        // 生成token
//        ajax.put(Constants.TOKEN, token);
//        return ajax;
//        //}
//        //finally {
//        //    redisCache.deleteObject(key);
//        //}
//    }
//}
